package dome2;

import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 王圆豪
 * Date: 2024-10-16
 * Time: 19:38
 */

class LinkStack {
    private class Node {
        char data; // 存储的字符
        Node next; // 指向下一个节点

        Node(char data) {
            this.data = data;
            this.next = null;
        }
    }

    private Node top; // 栈顶节点

    // 构造函数
    public LinkStack() {
        top = null; // 初始化栈为空
    }

    // 入栈操作
    public void push(char item) {
        Node newNode = new Node(item);
        newNode.next = top; // 新节点指向当前栈顶
        top = newNode; // 更新栈顶为新节点
    }

    // 出栈操作
    public char pop() {
        if (isEmpty()) {
            System.out.println("Stack is empty");
            return '\0'; // 返回空字符
        }
        char data = top.data; // 获取栈顶元素
        top = top.next; // 更新栈顶为下一个节点
        return data; // 返回栈顶元素
    }

    // 检查栈是否为空
    public boolean isEmpty() {
        return top == null;
    }

    // 读取栈顶元素
    public char peek() {
        if (isEmpty()) {
            return '\0'; // 返回空字符
        }
        return top.data; // 返回栈顶元素
    }
}

public class PalindromeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入字符串：");
        String input = scanner.nextLine();

        // 创建一个链栈实例
        LinkStack stack = new LinkStack();

        // 将字符串的字符入栈
        for (char ch : input.toCharArray()) {
            stack.push(ch);
        }

        StringBuilder reversed = new StringBuilder();

        // 逐个出栈并构建逆序字符串
        while (!stack.isEmpty()) {
            reversed.append(stack.pop());
        }

        // 比较原字符串和逆序字符串
        if (input.equalsIgnoreCase(reversed.toString())) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

        scanner.close();
    }
}
